<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>运算符</title>
</head>

<body>
  <script>
    //  1.     3 + 2 +“7”的结果是什么？3 + (2 + "7")的结果又是什么？这两个表达式输出的值是什么类型？数值相加与字符串拼接）
        // 57、327、数值相加与字符串拼接
    //  2.     6 - false的结果是什么？（减法运算符）
         //6
    //  3.     6 - "false"和6 + "false"的结果分别是什么？结果输出值是什么数据类型？（减法运算符和加法运算符的不同）
        // 6 - "false":NaN、
        // 6 + "false"：“6false”、字符串
    //  4.     请分析console.log(1 + - + + + - + 1)的结果？（一元运算符的运行顺序）
         //2
    //  5.     下面代码分别输出什么？前自增(自减)与后自增(自减)的区别？（自增自减）
    // let a = 1;
    // let b = ++a + ++a;
    // console.log(b);
         //b=5

    // let a = 1;
    // let b = a++ + a++;
    // console.log(b);
        //b=3

    //  6.     分析下面代码，请问 j 和 y 分别是多少？(不要运行代码，自己分析后写出答案)（自增自减）
    // var i = 100;
    // i++;
    // j = i++;
    // y = ++j
      // i:102、j:102、y:102

    //  7.     JS中哪些值通过Boolean对象转换出来的值为`false`?
           //0、null、""、NaN、false

    //  8.     分析下面代码的结果并解释原因。（短路运算）
    // let a = 1;
    // let b = 2;

    // console.log(a && b);//2 从左到右依次判断，如果遇到一个假值，就返回假值，以后不再执行，否则返回最后一个真值；
    // console.log(a || b);//1 从左到右依次判断，只要碰到了真值，就会短路，并返回该真值
    //  9.     以下代码输出的结果分别是什么？（短路运算）
    // let a = true && "" && 12306;
    // let b = false || "" || undefined || "bluej" || 12306;

    // console.log(a); //""
    // console.log(b);//bluej

    //  10.    分析下面代码，分别输出什么？(以注释形式写在console.log后面)（== 和 ===）

    // let str = "12306";
    // let str1 = 1;
    // let num = 12306;
    // let boo = true;

    // console.log(str == num);//true
    // console.log(str === num);//false
    // console.log(str1 == boo);//true
    // console.log(str1 === boo);//false

    //  11.    等于(==)与严格等于(===)的区别？
       // ==：判断值是否相等
       // ===：除了值的相等以外，还需要类型一致

    //  12.    下面代码输出的分别是什么？除了typeof还有什么方法可以判断数据类型？（数据类型判断）

    // let str = "bluej";
    // let num = 12306;
    // let boo = false;
    // let arr = [];
    // let obj = {};

    // console.log(typeof str); // string
    // console.log(typeof num);//number
    // console.log(typeof boo);//boolean
    // console.log(typeof arr);//object
    // console.log(typeof obj);//object
    // console.log(typeof undefined);//undefined
    // console.log(typeof null);//object

      //还可以用instanceof、Object.prototype.toString.call来判断


    // -------------以下题目为提高题,非必做-------------
    // - 写出执行结果,并解释原因(delete)

    // var company = {
    //     address: 'beijing'
    // }
    // var yideng = Object.create(company);
    // delete yideng.address
    // console.log(yideng.address); //beijing

    // - 写出执行结果,并解释原因（typeof）

    // var x=1;
    // if(function f(){}){
    //     x += typeof f;
    // }
    // console.log(x)

    // - 写出执行结果,并解释原因（typeof）

    // var foo = {
    //         bar: function(){
    //             return this.baz;
    //         },
    //          baz:1
    //     }
    // console.log(typeof (f=foo.bar)());

    // - 写出执行结果,并解释原因
    // const value  = 'Value is' + !!Number(['0']) ? 'yideng' : 'undefined';
    // console.log(value); //yideng
  </script>
</body>

</html>